refactor(storage): Migrate conformance tests to StorageTransport and enhance retry logic - #9134
Conversation
There was a problem hiding this comment.
Code Review
This pull request refactors the storage conformance tests to use StorageTransport directly for making API requests, updates test bench configurations, and improves URL normalization and error handling in StorageTransport. The reviewer feedback highlights several critical improvements: returning the chained promise in StorageTransport.makeRequest to prevent unhandled promise rejections, avoiding dynamic require() in favor of synchronous fs reads for service account keys, ensuring bucket and object names are URL-encoded in libraryMethods.ts, and removing an unnecessary promise return in Storage.createHmacKey to prevent conflicts with promisification.
00dcb72 to
644cae2
Compare
8edeb26 to
5421117
Compare
* fix(storage): standardize URL formatting and enhance transport retry * fix storage transport & retry issues * fix * Update handwritten/storage/src/file.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * fix(storage): interceptors test * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * feat: implement robust storage conformance test retry framework with request interception and test bench integration * fix: correct response handler for binary/resumable uploads and improve etag check - Updated `responseHandler` to correctly handle different payload types: - Plain objects are mutated with `.headers` and `.status` and returned. - Binary payloads (Buffer/Stream) return raw data to prevent dangerous mutations. - Primitives (e.g., empty strings) return the full `GaxiosResponse` wrapper to preserve access to headers like `Location` for resumable upload initiation. - Fixed `hasPrecondition` logic to safely parse stringified JSON or inspect objects directly for an `etag` property. This prevents false positives on raw text payloads containing the word "etag" and false negatives on object payloads. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods * fix: update file request URL construction to support custom protocol endpoints * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class * fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios responses in storage tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor: improve type safety and validation logic in isBucket helper function --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190) Hoists the generation of `persistentInvocationId` to the beginning of the upload process in `Bucket.upload` and `File.save`. This ensures that retried multipart upload attempts reuse the same invocation ID in the `x-goog-api-client` header, rather than generating a new one for each attempt. Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/{{metadata['repo']['name']}}/issues) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [ ] Ensure the tests and linter pass - [ ] Code coverage does not decrease (if any source code was changed) - [ ] Appropriate docs were updated (if necessary) Fixes #<issue_number_goes_here> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…nsistent trailing commas
…nsport and test suites
…to ensure streams are correctly piped before upload start
5421117 to
d8b93e8
Compare
74c5e12 to
2beb23b
Compare
* fix(storage): standardize URL formatting and enhance transport retry * fix storage transport & retry issues * fix * Update handwritten/storage/src/file.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * fix(storage): interceptors test * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * feat: implement robust storage conformance test retry framework with request interception and test bench integration * fix: correct response handler for binary/resumable uploads and improve etag check - Updated `responseHandler` to correctly handle different payload types: - Plain objects are mutated with `.headers` and `.status` and returned. - Binary payloads (Buffer/Stream) return raw data to prevent dangerous mutations. - Primitives (e.g., empty strings) return the full `GaxiosResponse` wrapper to preserve access to headers like `Location` for resumable upload initiation. - Fixed `hasPrecondition` logic to safely parse stringified JSON or inspect objects directly for an `etag` property. This prevents false positives on raw text payloads containing the word "etag" and false negatives on object payloads. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods * fix: update file request URL construction to support custom protocol endpoints * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class * fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios responses in storage tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor: improve type safety and validation logic in isBucket helper function --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190) Hoists the generation of `persistentInvocationId` to the beginning of the upload process in `Bucket.upload` and `File.save`. This ensures that retried multipart upload attempts reuse the same invocation ID in the `x-goog-api-client` header, rather than generating a new one for each attempt. Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/{{metadata['repo']['name']}}/issues) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [ ] Ensure the tests and linter pass - [ ] Code coverage does not decrease (if any source code was changed) - [ ] Appropriate docs were updated (if necessary) Fixes #<issue_number_goes_here> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…nsistent trailing commas
…nsport and test suites
…to ensure streams are correctly piped before upload start
d8b93e8 to
b541179
Compare
b541179 to
b2e9e05
Compare
* fix(storage): standardize URL formatting and enhance transport retry * fix storage transport & retry issues * fix * Update handwritten/storage/src/file.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * fix(storage): interceptors test * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * feat: implement robust storage conformance test retry framework with request interception and test bench integration * fix: correct response handler for binary/resumable uploads and improve etag check - Updated `responseHandler` to correctly handle different payload types: - Plain objects are mutated with `.headers` and `.status` and returned. - Binary payloads (Buffer/Stream) return raw data to prevent dangerous mutations. - Primitives (e.g., empty strings) return the full `GaxiosResponse` wrapper to preserve access to headers like `Location` for resumable upload initiation. - Fixed `hasPrecondition` logic to safely parse stringified JSON or inspect objects directly for an `etag` property. This prevents false positives on raw text payloads containing the word "etag" and false negatives on object payloads. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): replace constructor-based type checks with structural checks and decouple retry logic into idempotent and transient error utilities. * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): update storage-transport to return full GaxiosResponse and align downstream resource methods * fix: update file request URL construction to support custom protocol endpoints * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor(storage): introduce ENCRYPTION_ALGORITHM_AES256 constant to replace hardcoded strings in File class * fix(storage): merge request headers correctly in file.ts and add missing linting suppressions to ServiceObject * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios responses in storage tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * test: add bytes method to mock Gaxios response in acl and headers tests * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * fix(storage): standardize URL formatting and enhance transport retry * refactor(storage): remove Service.ts and migrate logic to StorageTransport (googleapis#8283) - Remove Service.ts and common.ts files from handwritten/storage - Migrate remaining functionality to StorageTransport - chore(ci): upgrade conformance tests to Node 18 * refactor: improve type safety and validation logic in isBucket helper function --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…es (googleapis#8190) Hoists the generation of `persistentInvocationId` to the beginning of the upload process in `Bucket.upload` and `File.save`. This ensures that retried multipart upload attempts reuse the same invocation ID in the `x-goog-api-client` header, rather than generating a new one for each attempt. Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/{{metadata['repo']['name']}}/issues) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [ ] Ensure the tests and linter pass - [ ] Code coverage does not decrease (if any source code was changed) - [ ] Appropriate docs were updated (if necessary) Fixes #<issue_number_goes_here> 🦕 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…nsistent trailing commas
…nsport and test suites
…to ensure streams are correctly piped before upload start
…o use storageTransport
… use string | undefined
b2e9e05 to
3ead0d8
Compare
… test/storage-conformance-gaxios
Dhriti07
left a comment
There was a problem hiding this comment.
Hi,
One major concern I have with the changes in libraryMethods.ts is that we're replacing calls to the actual SDK methods with direct storageTransport.makeRequest() calls.
The main goal of the conformance test suite is to verify that our public SDK layer adheres to GCS contracts, retries, and preconditions.
We lose test coverage for the SDK itself -any regression in say bucket.addLifecycleRule or file.save would go unnoticed since the tests wouldn't even run that code.
Could we instead keep calling the high-level SDK methods on bucket/file, have the Storage instance use StorageTransport under the hood, and inject the x-retry-test-id header via a request interceptor?
3ead0d8 to
3eb2445
Compare
b3b61ad to
915eec0
Compare
915eec0 to
7a6a155
Compare
We restored all high-level SDK method calls in libraryMethods.ts and switched to injecting the x-retry-test-id header via a request interceptor on StorageTransport. All conformance and unit tests are passing. |
Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
Fixes #<issue_number_goes_here> 🦕